// API基础URL
const apiUrl = "http://localhost:9999";

// 全局变量
let currentPage = 1;
let pageSize = 10;
let total = 0;

// 页面加载完成后执行
$(document).ready(function() {
    // 检查是否登录
    const token = localStorage.getItem('token');
    if (!token) {
        window.location.href = './login.html';
        return;
    }
    
    // 初始化
    initToastr();
    loadStockList();
    loadProductOptions();
    
    // 绑定事件
    bindEvents();
});

// 初始化Toastr提示框
function initToastr() {
    toastr.options = {
        closeButton: true,
        progressBar: true,
        positionClass: "toast-top-center",
        timeOut: 3000
    };
}

// 加载库存列表
function loadStockList() {
    const params = {
        page: currentPage,
        pageSize: pageSize,
        productName: $("#searchProductName").val()
    };
    
    $.ajax({
        url: `${apiUrl}/stock/list`,
        type: 'GET',
        headers: {
            'token': localStorage.getItem('token')
        },
        data: params,
        success: function(res) {
            if (res.code === 200) {
                renderStockList(res.data.records);
                total = res.data.total;
                updatePagination();
            } else if (res.code === -2) {
                // token过期，跳转到登录页
                window.location.href = './login.html';
            } else {
                toastr.error(res.msg || '获取库存列表失败');
            }
        },
        error: function() {
            toastr.error('获取库存列表失败');
        }
    });
}

// 渲染库存列表
function renderStockList(stocks) {
    const tbody = $("#stockTable tbody");
    tbody.empty();
    
    stocks.forEach(stock => {
        const tr = $("<tr></tr>");
        tr.append(`<td>${stock.id}</td>`);
        tr.append(`<td>${stock.productName}</td>`);
        tr.append(`<td>${stock.quantity}</td>`);
        tr.append(`<td>${stock.locked}</td>`);
        tr.append(`<td>${stock.quantity - stock.locked}</td>`);
        tr.append(`<td>${formatDateTime(stock.createTime)}</td>`);
        tr.append(`<td>${formatDateTime(stock.updateTime)}</td>`);
        tr.append(`
            <td>
                <button class="action-btn edit-btn" onclick="editStock(${stock.id})">编辑</button>
                <button class="action-btn delete-btn" onclick="deleteStock(${stock.id})">删除</button>
            </td>
        `);
        tbody.append(tr);
    });
}

// 加载商品下拉选项
function loadProductOptions() {
    $.ajax({
        url: `${apiUrl}/product/list`,
        type: 'GET',
        headers: {
            'token': localStorage.getItem('token')
        },
        data: { page: 1, pageSize: 100 },
        success: function(res) {
            if (res.code === 200) {
                const select = $("#productId");
                select.empty();
                select.append('<option value="">请选择商品</option>');
                
                res.data.records.forEach(product => {
                    select.append(`<option value="${product.id}">${product.name}</option>`);
                });
            } else if (res.code === -2) {
                window.location.href = './login.html';
            }
        }
    });
}

// 绑定事件
function bindEvents() {
    // 搜索按钮点击事件
    $("#searchBtn").click(function() {
        currentPage = 1;
        loadStockList();
    });
    
    // 重置按钮点击事件
    $("#resetBtn").click(function() {
        $("#searchProductName").val('');
        currentPage = 1;
        loadStockList();
    });
    
    // 新增按钮点击事件
    $("#addBtn").click(function() {
        showStockModal();
    });
    
    // 上一页按钮点击事件
    $("#prevPage").click(function() {
        if (currentPage > 1) {
            currentPage--;
            loadStockList();
        }
    });
    
    // 下一页按钮点击事件
    $("#nextPage").click(function() {
        if (currentPage * pageSize < total) {
            currentPage++;
            loadStockList();
        }
    });
    
    // 弹窗关闭按钮点击事件
    $(".close").click(function() {
        $("#stockFormModal").hide();
    });
    
    // 取消按钮点击事件
    $("#cancelBtn").click(function() {
        $("#stockFormModal").hide();
    });
    
    // 保存按钮点击事件
    $("#saveBtn").click(function() {
        saveStock();
    });
}

// 显示库存弹窗
function showStockModal(stock = null) {
    // 重置表单
    $("#stockForm")[0].reset();
    $("#stockId").val('');
    
    if (stock) {
        $("#modalTitle").text("编辑库存");
        $("#stockId").val(stock.id);
        $("#productId").val(stock.productId);
        $("#quantity").val(stock.quantity);
        $("#locked").val(stock.locked);
    } else {
        $("#modalTitle").text("新增库存");
    }
    
    $("#stockFormModal").show();
}

// 编辑库存
function editStock(id) {
    $.ajax({
        url: `${apiUrl}/stock/${id}`,
        type: 'GET',
        headers: {
            'token': localStorage.getItem('token')
        },
        success: function(res) {
            if (res.code === 200) {
                showStockModal(res.data);
            } else if (res.code === -2) {
                window.location.href = './login.html';
            } else {
                toastr.error(res.msg || '获取库存信息失败');
            }
        },
        error: function() {
            toastr.error('获取库存信息失败');
        }
    });
}

// 删除库存
function deleteStock(id) {
    if (confirm('确定要删除该库存记录吗？')) {
        $.ajax({
            url: `${apiUrl}/stock/${id}`,
            type: 'DELETE',
            headers: {
                'token': localStorage.getItem('token')
            },
            success: function(res) {
                if (res.code === 200) {
                    toastr.success('删除成功');
                    loadStockList();
                } else if (res.code === -2) {
                    window.location.href = './login.html';
                } else {
                    toastr.error(res.msg || '删除失败');
                }
            },
            error: function() {
                toastr.error('删除失败');
            }
        });
    }
}

// 保存库存
function saveStock() {
    const data = {
        id: $("#stockId").val() || null,
        productId: $("#productId").val(),
        quantity: parseInt($("#quantity").val()),
        locked: parseInt($("#locked").val())
    };
    
    if (!data.productId) {
        toastr.error('请选择商品');
        return;
    }
    
    if (data.quantity < 0) {
        toastr.error('库存数量不能小于0');
        return;
    }
    
    if (data.locked < 0) {
        toastr.error('锁定库存不能小于0');
        return;
    }
    
    if (data.locked > data.quantity) {
        toastr.error('锁定库存不能大于库存数量');
        return;
    }
    
    const url = `${apiUrl}/stock`;
    const type = data.id ? 'PUT' : 'POST';
    
    $.ajax({
        url: url,
        type: type,
        headers: {
            'token': localStorage.getItem('token'),
            'Content-Type': 'application/json'
        },
        data: JSON.stringify(data),
        success: function(res) {
            if (res.code === 200) {
                toastr.success('保存成功');
                $("#stockFormModal").hide();
                loadStockList();
            } else if (res.code === -2) {
                window.location.href = './login.html';
            } else {
                toastr.error(res.msg || '保存失败');
            }
        },
        error: function() {
            toastr.error('保存失败');
        }
    });
}

// 更新分页信息
function updatePagination() {
    $("#pageInfo").text(`第 ${currentPage} 页`);
    $("#totalInfo").text(`共 ${total} 条`);
    
    // 更新按钮状态
    $("#prevPage").prop('disabled', currentPage <= 1);
    $("#nextPage").prop('disabled', currentPage * pageSize >= total);
}

// 格式化日期时间
function formatDateTime(dateTime) {
    if (!dateTime) return '';
    const date = new Date(dateTime);
    return `${date.getFullYear()}-${padZero(date.getMonth() + 1)}-${padZero(date.getDate())} ${padZero(date.getHours())}:${padZero(date.getMinutes())}:${padZero(date.getSeconds())}`;
}

// 补零
function padZero(num) {
    return num < 10 ? `0${num}` : num;
} 
